<template>
  <div class="todo-footer">
    <label>
      <input type="checkbox" :checked="isCheckAll" @change="changeCheckAll" />
    </label>
    <span>
      <span>已完成 {{ isDoneTotal }}</span> / 全部{{ todos.length }}
    </span>
    <button class="btn btn-danger">清除已完成任务</button>
  </div>
</template>

<script setup lang="ts">
import { computed } from 'vue'
import type { Todo } from '../types/todo.ts'
const props = defineProps<{ todos: Todo[] }>()
const emit = defineEmits<{
  (e: 'changeAll', isDone: boolean): void
}>()

const isDoneTotal = computed(() => {
  return props.todos.filter((todo: Todo) => todo.isDone).length
})

const isCheckAll = computed(() => {
  return isDoneTotal.value === props.todos.length && props.todos.length > 0
})

const changeCheckAll = (event: KeyboardEvent): void => {
  const isDone = (event.target as HTMLInputElement).checked
  emit('changeAll', isDone)
}
</script>

<style scoped>
/*footer*/
.todo-footer {
  height: 40px;
  line-height: 40px;
  padding-left: 6px;
  margin-top: 5px;
}

.todo-footer label {
  display: inline-block;
  margin-right: 20px;
  cursor: pointer;
}

.todo-footer label input {
  position: relative;
  top: -1px;
  vertical-align: middle;
  margin-right: 5px;
}

.todo-footer button {
  float: right;
  margin-top: 5px;
}
</style>
